import config from "@/config";  // 配置文件
import storage from "./storage"; // 缓存封装
const pageArr = ['pages/index/index','pages/my/my'];//不登陆可以进入得页面

// import wxh from 'weixin-js-sdk'
export default {
	console(options){
		if(config.debug){
		} 
	},
	domain(){
		return config.uni_app_web_api_url.replace("api","");
	},
	send(options={}){
		console.log("optionsoptions",options)
        // loading加载
        uni.showLoading({
           title: '加载中'
        });
        
        // 拼接路劲，下面的配置文件会提到
		options.url = config.uni_app_web_api_url + '' + options.url;
        // 请求方式
		options.method = options.method || "GET";
		
        // 这里看项目的情况来定，如果是没有token，那就删除这里，上面的storage也不需要引入
		let token = uni.getStorageSync('token');
		if(token != null){
			options.header = { "Authorization" : `Bearer ${token}` };
		}
		// config.header['Authorization'] = `Bearer ${token}`
		this.console(options);  // 打印请求数据，调试用，上线可以注释
		
		//获取当前页面
        let pages = getCurrentPages();
        let currentPage = pages[pages.length - 1];
        // 发起Promise请求
		return new Promise((resolve, reject) =>{
			uni.request(options).then(data=>{
				var [error, res] = data;
				uni.hideLoading();
				if(error != null){
					reject(error);
				}else{
					uni.stopPullDownRefresh()
                    // 相应拦截、根据后端的状态码来写，可以自行判断和封装
					if(res.data.code === 401){
						if(pageArr.includes(currentPage.route)){
							//当前页面不会跳转登录
							if(token){
								uni.setStorageSync('token',null)
								wx.redirectTo({
									url:`/${currentPage.route}`
								})
								
							}
						}else{
							if(token){
								uni.showToast({
								  icon: 'none',
								  title: res.data.msg,
								  success: () => {
								    this.getloginOut();//退出登录
								  }
								})
							}else{
								this.getloginOut();//退出登录
							}
						}
						
					}else if(res.data.code === 403){
						uni.showToast({
						  icon: 'none',
						  title: '您的账号已被禁用，请联系管理员解除。',
						  success: () => {
							setTimeout(()=>{
								this.getloginOut();//退出登录
							},1500)
						   
						  }
						})
					}else if(res.data.code !== 200){
						uni.showToast({
						  icon: 'none',
						  title: res.data.msg,
						})
					}else{
						resolve(res.data); 
					}
				}
			});
		});
	},
	getloginOut(){
		uni.setStorageSync('token',null)
		let pages = getCurrentPages();
		let currentPage = pages[pages.length - 1];
		//如果当前是登录页面得话就不跳转了
		if(currentPage.route === 'pages/login/login'){
			return
		}
		// #ifdef MP-WEIXIN 
		// this.$store.commit('SET_URL', currentPage.$page.fullPath);
		uni.reLaunch({
		  url: `/pages/login/login?target=${encodeURIComponent(currentPage.$page.fullPath)}`
		})
		// #endif
		
		// #ifdef H5
		// wxh.miniProgram.reLaunch({
		//   url: "/pages/login/login", //小程序地址
		// });
		// #endif
		
	},
	get(url="",data={}){
		return this.send({
			url: url,
			data: data
		});
	},
	post(url="",data={}){
		return this.send({
			url: url,
			data: data,
			method: "POST"
		});
	},
	put(url="",data={}){
		return this.send({
			url: url,
			data: data,
			method: "put"
		});
	},
	delete(url="",data={}){
		return this.send({
			url: url,
			data: data,
			method: "delete"
		});
	},
};
